const { app, BrowserWindow, ipcMain, shell } = require('electron');
const path = require('path');

// 确保只有一个应用实例
const gotTheLock = app.requestSingleInstanceLock();

if (!gotTheLock) {
  app.quit();
} else {
  app.on('second-instance', (event, commandLine, workingDirectory) => {
    // 当用户尝试启动第二个实例时，聚焦到主窗口
    if (mainWindow) {
      if (mainWindow.isMinimized()) mainWindow.restore();
      mainWindow.focus();
    }
  });

  // 声明主窗口变量
  let mainWindow;

  // 创建主窗口
  function createWindow() {
    mainWindow = new BrowserWindow({
      width: 1200,
      height: 800,
      minWidth: 800,
      minHeight: 600,
      title: '云境商店 - 游戏商店',
      icon: path.join(__dirname, 'src/assets/app-icon.ico'),
      frame: false, // 无边框窗口
      titleBarStyle: 'hidden',
      trafficLightPosition: { x: 15, y: 10 },
      backgroundColor: '#1E293B', // 与HTML中的深色背景匹配
      show: false, // 延迟显示窗口直到准备就绪
      visualEffectState: { resizing: true }, // 优化窗口调整性能
      // 性能优化配置
      webPreferences: {
          nodeIntegration: false,
          contextIsolation: true,
          enableRemoteModule: false,
          preload: path.join(__dirname, 'preload.js'),
          // 启用硬件加速
          hardwareAcceleration: 'gpu',
          // 禁用背景节流以提高交互响应
          backgroundThrottling: false,
          // 优化渲染性能
          disableHtmlFullscreenWindowResize: true,
          // 限制渲染进程内存使用
          maxMemoryMB: 1024,
          // 禁用不必要的特性
          disableSiteIsolationTrials: true,
          spellcheck: false, // 禁用拼写检查
          // 添加Chrome性能优化参数
          additionalArguments: [
            '--disable-features=PaintHolding',
            '--enable-gpu-rasterization',
            '--force-gpu-mem-available-mb=1024',
            '--disable-background-timer-throttling',
            '--enable-zero-copy',
            '--enable-native-image-decoding',
            '--disable-image-animation-resync',
            '--enable-oop-rasterization',
            '--disk-cache-size=524288000',
            '--disable-dev-shm-usage',
            '--js-flags="--cache-size=1000000"', // 启用V8缓存
            '--enable-skia-renderer'
          ]
        }
    });

    // 加载index.html
    mainWindow.loadFile('index.html');

    // 优化窗口显示性能
    mainWindow.on('ready-to-show', () => {
      mainWindow.show();
    });

    // 优化窗口失焦/聚焦性能
    mainWindow.on('blur', () => {
      mainWindow.webContents.setFrameRate(10);
    });

    mainWindow.on('focus', () => {
      mainWindow.webContents.setFrameRate(60);
    });

    // 窗口关闭时清理
    mainWindow.on('closed', () => {
      mainWindow = null;
    });

    // 窗口最大化状态变化
    mainWindow.on('maximize', () => {
      mainWindow.webContents.send('window-maximized');
    });

    mainWindow.on('unmaximize', () => {
      mainWindow.webContents.send('window-unmaximized');
    });

    // 开发模式下打开开发者工具
    // mainWindow.webContents.openDevTools();
  }

  // 窗口控制的IPC处理
ipcMain.on('minimize-window', () => {
    if (mainWindow) {
      mainWindow.minimize();
    }
  });

  ipcMain.on('maximize-window', () => {
    if (mainWindow) {
      if (mainWindow.isMaximized()) {
        mainWindow.unmaximize();
      } else {
        mainWindow.maximize();
      }
    }
  });

  ipcMain.on('close-window', () => {
    if (mainWindow) {
      mainWindow.close();
    }
  });

  ipcMain.on('open-external-link', (event, url) => {
    shell.openExternal(url);
  });

  // 应用准备就绪时创建窗口
  app.whenReady().then(createWindow);

  // 所有窗口关闭时退出应用（macOS除外）
  app.on('window-all-closed', () => {
    if (process.platform !== 'darwin') {
      app.quit();
    }
  });

  // macOS下点击Dock图标时重新创建窗口
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow();
    }
  });
}